1. Physics Component Scale 영향 받지 않는 버그
물리 엔진의 바디들은 Location과 Quaternion값만 가지기 때문에, Scale을 변경할 수 없다. 따라서 Scale이 변경된 경우 Shape를 새로 만들어주게 만들었다.
void WPhysicsComponent::UpdateToPhysics()
{
FTransform WorldTransform = GetWorldTransform();
if (mbPhysicSimulate && mMotionType != EMotionType::Static && !mLastPhysicsTransform.Equal(WorldTransform))
{
if Equal(mLastPhysicsTransform.Scale, WorldTransform.Scale)
{
mBody->UpdateShape(CreatePhysicsShape());
}
mLastPhysicsTransform = WorldTransform;
mBody->SetTransform(GetWorldTransform());
}
}
void WPhysicsComponent::UpdateFromPhysics()
{
if (mbPhysicSimulate && mMotionType != EMotionType::Static)
{
FTransform Transform = GetWorldTransform();
Transform.Translation = mBody->GetLocation();
Transform.Rotation = mBody->GetRotation();
Transform.Scale = mLastPhysicsTransform.Scale;
if (!Transform.Equal(mLastPhysicsTransform))
{
mLastPhysicsTransform = Transform;
SetWorldTransform(mLastPhysicsTransform);
}
}
}